《小吃貨的英國日常》軟體工程師到底在做什麼?
很多人常會想像軟體工程師就是,在電腦前做一些什麼,然後進階一點可能會覺得就是在寫程式,偶爾聽到他們說什麼Debug, 這也是我在成為工程師前,對工程師工作日常的想像。
實際上,其實軟體工程師也分很多種,例如Web類還有分前端後端全端,手機類,還有像桌上型程式,其他也有像測試工程師,遊戲工程師,網路安全工程師,架構工程師,每一種工程師都不見得知道其他種的日常,甚至不同公司,不同產業使用不同的開發模式,像waterfall, agile, 有沒有CI/CD,DevOps,雲端,版控都差很多……
至於我到底在幹嘛……目前邁入工作的第二年,相較於第一年的菜鳥訓練生生活真的差很多,大概就是漸漸步入軌道,越來越接近一般工程師的生活。由於我們team是走DevOps, CI/CD,Agile, 基本上每天早上都要開會scrum,每個星期一有weekly planning, 要plan task。那開會在幹嘛呢?就是要報告自己昨天做了什麼?任何瓶頸?今天要做什麼? 這樣有問題可以馬上和team討論,team member 也才會知道你在幹嘛。每個禮拜一除了會run一次scrum 還會把一些任何做plan, 就是討論這個任務在做啥,怎樣task break down, 這個很重要,因為task 的size也很重要,要分幾個sub task, 要做什麼,誰要做,有任何問題? 需要再跟設計師討論? 當然因為DevOps, 我們所有meeting 設計師跟測試還有PM都會在,更方便討論。其他時候我們就自己認領task去做,做完丟給team leader review, code review 完才去測試工程師那, 然後才deploy, 所有流程都在Jira Kanban 版上,所有做了多少時間都要log work, 供PM看Team Leader 掌握進度。我目前是fullstack 全端,所以前後端都要學, 而學習主要還是自學。和其他工作很不一樣的是,工程師大多要自學,自己找資源,看影片,看文件,所以比較痛苦的大概是英文閱讀,另外是溝通,因為要一直開會,一直討論,還有要跟設計師,測試討論,這大概是因為DevOps, 所以更會這樣。這一年來我英文閱讀跟口說進步神速,而真正coding 反而沒那麼多,更多是在做AWS, 寫script, 雖然寫script 人家也會說寫程式,可是現在更像是了解computer science, 要知道很多系統,很多規格,很多Design Pattern 的東西,而前端框架也是,更多是怎樣設計,演算法別人都包好了,後端也是框架都包好了,一來不容易出錯,二來容易測試,反而跟以前所想像的工程師工作或在學校學的差很多。在工作上更重要的是Software Engineering, 怎樣寫出clean, high availability, testable, readable 的code比你想出很聰明的方法更重要。有時很efficient 的function, 可能很難測試,可能有漏洞,可能很難相容。
不知道大家會不會覺得工程師的日常好像很無聊呢~哈哈!至於工作環境,英國和台灣一樣,女生工程師很少,所以大部份的同事男生,大家可能會幻想那,英國的男生對女生都很紳士什麼的。在我公司一點也不會,反而會覺得男生工程師都講話更Aggresive,當他們覺得就是這樣,就很難改變他們意見,有時候他們講話也沒在客氣,質疑你的想法,批判你的想法都很直接。但也因為這樣,有時候一群男性工程師更容易做出太果斷的決定,通常他們就只有Yes 或No居多,所以工作環境的diversity 也很重要。當然另外,普遍男工程師也比女工程師更有自信(網路上有研究數據),可能是環境的關係,所以就更容易做出偏頗的決定,而且因為團隊中可能只有一個工程師是女生,有時也很難真的有diversity 的效果……而且當團隊80%都持意見A時,往往就不會考慮到剩下的20%,即使那可能是軟體開發很重要的一環。可能也是因為我英文不夠好又是外國人,又是團隊中唯一的女工程師,就也常常不知道何時可以發表意見或害怕講話,怕講錯話,而且英文也很難完整表達,這大概也是未來需要努力的部份吧~另外就是看文件的速度還有思考邏輯。每次我如果描述一個問題,我主管都會說,這不是工程師用語,你要用工程師的用語,像defect, tech debt, 或者不能說I don't know, 當你不知道的時候就要馬上找到原因,而不是問人,你即使問人也要說你覺得可能的問題或原因。
#覺得當工程師好難
#一有空檔就到廚房偷懶
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「high availability架構」的推薦目錄:
- 關於high availability架構 在 小吃貨的英國生活日記 Facebook 的最佳貼文
- 關於high availability架構 在 紀老師程式教學網 Facebook 的最佳貼文
- 關於high availability架構 在 新星粉絲團(產業升級轉型服務團-新興產業分團) Facebook 的最佳解答
- 關於high availability架構 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於high availability架構 在 大象中醫 Youtube 的最佳貼文
- 關於high availability架構 在 大象中醫 Youtube 的精選貼文
- 關於high availability架構 在 Elastic Cloud Enterprise 維運與除錯: 維運節點及高可用性的 ... 的評價
- 關於high availability架構 在 mJace/HarborHA: Harbor HA 全手動安裝手冊 - GitHub 的評價
high availability架構 在 紀老師程式教學網 Facebook 的最佳貼文
[軟體工程] 設計一個大系統應該遵循什麼步驟?有哪些要注意的地方?
「系統設計備忘錄(System Design Cheatsheet)」
https://goo.gl/FcuIqo
#SoftwareEngeineering #SystemDesign #Cheatsheet
常有「突然」當上小主管、或者被要求「帶 Team」的朋友問:「設計一個大系統,有沒有步驟可以遵循?」或者「設計大系統時,有沒有哪些一定要考量的地方?」您需要的是「軟體工程」相關的知識。可是軟體工程的書厚達上千頁,我們家的「慣老闆」(笑)要求我下週提個計畫給他耶!怎麼辦?有沒有速成的方法?今天介紹的網頁,可以稍稍解決您這部份的痛苦。
我簡單不負責任翻譯一下騙讚...不是,方便英文苦手的朋友參考好了 XD:
一、系統設計基本五步驟
1. 明訂系統目標(System Scope),並取得客戶同意。設計內容包含:
(1) 收集客戶使用案例(User Cases)/ 使用情境
(2) 明訂系統承載上限(網路流量、同時登入人數、記憶體限制...)
2. 系統概念設計(High Level Design)
(1) 一般會設計到包含哪些系統元件。
(2) 至於系統元件在此步驟就當成黑盒子,直到下一步才做細部設計。
3. 系統元件細部設計(Component Design)
(1) 特定軟體元件內部設計
(2) 供外部呼叫用的 API 設計
(3) 設計該包含哪些物件,並指定每個物件的功能。
(4) 資料庫架構設計
4. 了解瓶頸所在
(1) 根據「需求」與「架構」,預先猜測壓力最大的元件(如:CPU 速度、資料庫速度...)
(2) 如何修改架構、紓緩瓶頸,以求達到客戶需求,則交由下一步驟來做。
5. 增刪系統架構與設計(Scaling)
(1) 是否應該增加硬體速度與規格(Vertical Scaling)?或者該多買幾台,平行運作(Horizontal Scaling)?
(2) 快取(Cache)是否足夠?
(3) 是否要「平衡負載(Load Balancing)」機制?
(4) 資料庫切分、抄寫、備份考量
(5) 是否應該用「多重軟體層(Multi-layers)」來分散負重、加快效能?
二、系統設計考量關鍵
1. 並行處理(Concurrency)
2. 網路(Networking)
3. 各軟體層職責分明(Clarify each Abstraction Layer)
4. 實際效能優劣(Real-world Performance)
5. 估算(Estimation)
6. 在線率(Availability,如:保證 99.99% 的在線時間)與可靠度
三、網頁系統設計考量關鍵
1. 資訊安全考量(Security)
2. 如何受益於全球各地的快取伺服器(CDN),將客戶等待時間降至最低
3. 全文檢索機制
4. 有沒有離線支援
5. 是否需要背景執行的程式(Web Worker)
6. 後台語言的選用(Server Side Rendering,如:PHP?ASP.NET?)
7. 非同步載入(在你不用網頁資源時,偷偷預先載入待會可能用得上的東西)
8. 如何最小化網路負載
9. 開發工具選用
10. 是否針對聽障、視障人士,提供友善存取網頁內容的方法(Accessibility)
11. 是否提供多國語系(Internationalization)?
12. 是否在不同寬度的螢幕(電腦、平板、手機),提供不同的版型,以便舒適閱讀(響應式設計,Responsive design)?
13. 是否能相容於不同的瀏覽器(IE、Firefox、Chrome、Safari、Opera...)
四、網頁前台架構開發相關元素
1. 原始碼(Code)本身
2. 文件(Documentation)
3. 測試機制的設計(Testing)
4. 開發流程(Process)注意事項
(1) 版本控制(如:使用 Git 工具)
(2) 元件相依管理(如:npm, Bundler, Bower)
(3) 自動化建構工具(如:Grunt/Gulp)
(4) 系統建置與導入流程(如:Docker)
(5) 持續整合工具(如:Travis CI, Jenkins)
(喘...)哈哈!有不少名詞礙於篇幅限制,我沒在這裡解釋得很清楚。如果您有什麼問題,不用客氣留言在下面給我喔!今天的分享希望各位喜歡,也祝福大家有個美好的週末!還請大家多多按讚鼓勵,或者分享給您臉書上的好友喔!
high availability架構 在 新星粉絲團(產業升級轉型服務團-新興產業分團) Facebook 的最佳解答
【Synology NAS】RC18015xs+
⭕內建支援 High Availability (HA) 叢集,透過主/副伺服器自動容錯移轉架構,大幅降低服務中斷的可能損失
⭕兩伺服器共享專屬擴充裝置 RXD1215sas 的儲存空間,具備最高可達 180 顆硬碟/1PB 的高擴充性
⭕新一代快照技術,更提供了彈性、即時的資料備份
⭕RC18015xs+ 與 RXD1215sas 提供安全、可靠、超高效能的儲存解決方案
➡適合需要確保持續營運能力與即時資料還原的企業
high availability架構 在 mJace/HarborHA: Harbor HA 全手動安裝手冊 - GitHub 的推薦與評價
Harbor HA 架構 · 1. Harbor Node和其LoadBalancer. (Active/Active) 藉由keepalived將流量平均分配到其下Harbor Node · 2. MariaDB Cluster. (Active/Active) · 3. Redis ... ... <看更多>
high availability架構 在 Elastic Cloud Enterprise 維運與除錯: 維運節點及高可用性的 ... 的推薦與評價
這篇文章會示範如何透過Elastic Cloud Enterprise 配置高可用性(High Availability) 的系統架構,透過架構設計來消除單點故障的影響來提升網站的可靠 ... ... <看更多>